package com.tbit.uqbike.client.pojo.dto;

import com.alibaba.fastjson.annotation.JSONField;
import com.tbit.uqbike.client.constant.InvoiceRecordConstant;
import com.tbit.uqbike.client.pojo.User;
import lombok.Data;
import lombok.experimental.Accessors;

import javax.validation.constraints.NotNull;
import java.util.Date;
import java.util.List;

/**
 * 开发票实体类
 *
 * @Author:BUGTian
 * @DATE: 2023/8/30
 */
@Data
@Accessors(chain = true)
public class AddInvoiceRecordDTO {
    /**
     * 抬头类型(1:单位，2:个人/非企业单位)
     */
    @NotNull
    private Integer titleType;
    /**
     * 抬头
     */
    @NotNull
    private String companyTitle;
    /**
     * 公司税号
     */
    private String companyTaxNumber;
    /**
     * 公司地址
     */
    private String companyAddress;
    /**
     * 公司电话
     */
    private String companyPhone;
    /**
     * 开户银行
     */
    private String bank;
    /**
     * 开户账号
     */
    private String account;
    /**
     * 邮箱
     */
    @NotNull
    private String email;
    /**
     * 发票地址
     */
    private String url;
    /**
     * 发票单号
     */
    private String invoiceNumber;
    /**
     * 备注
     */
    private String remark;

    /**
     * 订单编号
     */
    @NotNull
    private List<String> orderList;
    /**
     * 订单类型(1:骑行订单 2:套餐订单)
     */
    @NotNull
    private Integer orderType;

    /**
     * 用户id
     */
    @JSONField(serialize = false)
    private Integer userId;
    /**
     * 品牌id
     */
    @JSONField(serialize = false)
    private Integer brandId;
    /**
     * 用户手机号
     */
    @JSONField(serialize = false)
    private String userPhone;
    /**
     * 开票金额
     */
    @JSONField(serialize = false)
    private Double invoiceAmount;
    /**
     * 申请时间
     */
    @JSONField(serialize = false)
    private Date applyTime;
    /**
     * 发票状态
     * 0-已申请,待开票
     * 1-已开票
     * 2-已驳回
     * 3-重开待审核
     * 4-已退票
     */
    @JSONField(serialize = false)
    private Integer status;

    /**
     * 开票类型：0-自动开票；1-手动开票
     * */
    private Integer invoiceOpenType;

    public void addInit(User user, Double money) {
        setUserId(user.getUserId()).setBrandId(user.getAccountId()).setUserPhone(user.getPhone()).setInvoiceAmount(money).setApplyTime(new Date()).setStatus(InvoiceRecordConstant.STATUS_APPLY);
    }
}
